﻿using RBAC_Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace RBAC_Application.Repository.Interface
{
    public interface IRoleRepository
    {
        // 查询
        /// <summary>
        /// 根据ID查询角色
        /// </summary>
        /// <param name="id">角色ID</param>
        /// <returns>角色对象</returns>
        Role GetById(long id);  // 修改为long类型
        /// <summary>
        /// 获取所有角色
        /// </summary>
        /// <returns>角色列表</returns>
        List<Role> GetAll();
        /// <summary>
        /// 根据关键词查询角色
        /// </summary>
        /// <param name="keyword">关键词</param>
        /// <returns>角色列表</returns>
        List<Role> GetByCondition(string keyword);
        /// <summary>
        /// 根据用户ID获取其拥有的角色
        /// </summary>
        /// <param name="userId">用户ID</param>
        /// <returns>角色列表</returns>
        List<Role> GetRolesByUserId(long userId);  // 修改为long类型

        // 增删改
        /// <summary>
        /// 添加角色
        /// </summary>
        /// <param name="role">角色对象</param>
        void Add(Role role);
        /// <summary>
        /// 更新角色
        /// </summary>
        /// <param name="role">角色对象</param>
        void Update(Role role);
        /// <summary>
        /// 删除角色
        /// </summary>
        /// <param name="id">角色ID</param>
        void Delete(long id);  // 修改为long类型
        /// <summary>
        /// 判断角色名称是否已存在
        /// </summary>
        /// <param name="roleName">角色名称</param>
        /// <returns>true表示已存在，false表示不存在</returns>
        bool Exists(string roleName);
    }
}
